package com.ceair.flight.refund.location.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.ceair.flight.refund.dto.external.RefundPriceResultList;
import com.ceair.flight.refund.dto.external.RefundableRequest;
import com.ceair.flight.refund.dto.external.RefundableResultList;
import com.ceair.flight.refund.location.model.RefundApplyDO;
import com.ceair.muservice.basicdata.dto.airport.AirportDto;
import com.ceair.muservice.basicdata.dto.channel.ChannelManageDto;
import com.ceair.muservice.common.exception.MuServiceException;

public interface IRefundLocationService {

    public RefundableResultList checkRefundable(String flightOrderNo, Set<String> tikectSet,String createId,String ffpNo);

    public RefundPriceResultList calculatePrice(RefundableRequest request) throws MuServiceException;

    /**
     * 计算自愿退票相关金额
     *
     * @param request
     */
    public RefundPriceResultList calculateVolPrice(RefundableRequest request) throws MuServiceException;

    /**
     * 计算自愿退票相关金额
     *
     * @param request
     */
    public RefundPriceResultList calculateInVolPrice(RefundableRequest request) throws MuServiceException;

    ChannelManageDto findChannelByCode(String channelCode);

    Map<String, AirportDto> findNationCityAirNameByCodes(List<String> codeList);

    String getExternalData(String url, String param);


    /**
     * 获取refundApply 信息
     *
     * @param applyId
     * @return
     */
    RefundApplyDO getRefundApply(Long applyId);

    /**
     * 重新提交，更改refundApply状态
     *
     * @param refundApplyDO
     */
    boolean reApply(RefundApplyDO refundApplyDO);

}
